package com.gxc.array;

import com.gxc.print.ArrayPrint;

/**
 * 66. 加一
=
 * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
 *
 * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 *
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 */
public class PlusOne {

    public static void main(String[] args) {
        ArrayPrint.print2(handle(new int[]{
                1,2,3
        }));

        ArrayPrint.print2(handle(new int[]{
                4,3,2,1
        }));
        ArrayPrint.print2(handle(new int[]{
                9,9,9,9
        }));
    }

    public static int[] handle(int[] digits) {
        int n = digits.length-1;
        boolean carry = true;
        while (carry && n>=0) {
            if (digits[n] + 1 ==10) {
                carry = true;
                digits[n] = 0;
                n--;
            } else {
                carry = false;
                digits[n] = digits[n]+1;
            }
        }

        if (n == -1) {
            int[] res = new int[digits.length+1];
            res[0] = 1;
            return res;
        }
        return digits;
    }
}
